package cl.uchile.sti.authorization.dao;

import cl.uchile.sti.authorization.model.Pagina;
import cl.uchile.sti.authorization.model.Usuario;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: Julio Villane
 * Date: 11-12-12
 * Time: 09:39 AM
 */
public class UsuarioDAO{

    private static EntityManager entityManager = cambiarPorSpring.getEntityManager();

    private UsuarioDAO(){}

    public static List<Usuario> find(){
        Query q =  entityManager.createQuery("select p from Pagina p ");
        List <Usuario> resultado=q.getResultList();
        return resultado;
    }

    public static Usuario findID(Long id){
        return entityManager.find(Usuario.class, id);
    }
    public static Usuario findNombre(String nombre){
        return entityManager.find(Usuario.class, nombre);
    }

    public static Usuario findApellidoPaterno(String apellidoPaterno){
        return entityManager.find(Usuario.class, apellidoPaterno);
    }
    public static Usuario findApellidoMaterno(String apellidoMaterno){
        return entityManager.find(Usuario.class, apellidoMaterno);
    }
    public static Usuario findRUT(String rut){
        return entityManager.find(Usuario.class, rut);
    }
    public static Usuario findidentificador(String identificador){
        return entityManager.find(Usuario.class, identificador);
    }
    public static Usuario save(Usuario usuario) {
        if (usuario.getId() == null) {
            if (usuario.getNombres()==null){
                usuario.setNombres("sin nombres");
            }
            if (usuario.getApellidoPaterno()==null){
                usuario.setApellidoPaterno("sin apellido paterno");
            }
            if (usuario.getApellidoMaterno()==null){
                usuario.setApellidoMaterno("sin apellido materno");
            }
            entityManager.persist(usuario);
            return usuario;
        } else {
            return entityManager.merge(usuario);
        }
    }

    public static void delete(Usuario usuario){
        entityManager.remove(usuario);
    }
}
